<!DOCTYPE htm PUBLIC "-//W3C//DTD Xhtm 1.0 Transitional//EN" "DTD/xhtm1-transitional.dtd"> 
<htm xmlns="http://www.w3.org/1999/xhtm" xml:lang="de" lang="de">
<head>
 <meta http-equiv="content-type" content="text/htm; charset=iso-8859-1" />
 <meta http-equiv="content-style-type" content="text/css" />
 <meta name="author" content="Arlsair" />
 <meta name="date" content="2004-01-22" />
 <title>VagueDenoiser</title>
 <link rel="stylesheet" type="text/css" href="../../style.css" />
</head><body>
<h1>VagueDenoiser</h1>

<h2>&Uuml;bersicht</h2>
<b>Autor:</b> Lefungus<br />
<b>Version:</b> 0.28.0<br />
<b>Download:</b> <a href="http://perso.wanadoo.fr/reservoir/avisynth.html" target="_blank">http://perso.wanadoo.fr/reservoir/avisynth.html</a><br />
<b>Kategorie:</b> R&auml;umlicher Weichzeichner<br />
<b>Anforderungen:</b>YV12 oder YUY2 Farbformat<br />
<hr size=2 width="100%" align=center>

<!-- #EndTemplate -->
<font face="verdana"><center><u>
<h1>VagueDenoiser: Wavelet Denoiser for Avisynth 2.5+<br>
<small><!-- Version -->
(v0.28.0)</small></h1>
</u></center><br>
<h2>What it does:</h2>
<p>&nbsp;
<ul>
  This is a Wavelet based Denoiser. Basically, it transforms&nbsp;each frame
  from the video input into the wavelet domain, using various wavelet filters.
  Then it applies some filtering to the obtained coefficients. It does an
  inverse wavelet transform after. Due to wavelet properties, it should gives a
  nice smoothed result, and reduced noise, without blurring picture features.
  This wavelet transform could be done on each plane of the colorspace. This
  filter uses a wavelet from Brislawn tutorial. (Brislawn 10/10)
</ul>
<h2>Examples Usage of VagueDenoiser filter:</h2>
(all the avisynth script lines here are only exemples)<br>
<p>&nbsp;
<h3>Some settings Lefungus (comments on Qian's thresholding to come) likes:</h3>
<ul>
  For light filtering on a movie.
  (medium-&gt;threshold=1-1.5;strong-&gt;threshold= 2-3)<br>
  <br>
  <code>
  <p>VagueDenoiser(threshold=0.8,method=1,nsteps=6,chroma= true)</p>
  </code>For light filtering on an anime. (medium-&gt;threshold=2;
  strong-&gt;threshold=4)<br>
  <code>
  <p>VagueDenoiser(threshold=1.5,method=1,nsteps=6,chroma=true)</p>
  </code>For seeing how much wavelet information is discarded (luma plane only,
  use UtoY() otherwise).<br>
  <code>
  <p>VagueDenoiser(&lt;...&gt;,chroma=false,debug=true)<br>
  </p>
  </code>
</ul>
<h2>Syntax of VagueDenoiser filter:</h2>
<ul>
  <h3>VagueDenoiser:</h3>
  <code>VagueDenoiser(int &quot;threshold&quot;&nbsp;int &quot;method&quot;, int
  &quot;nsteps&quot;,&nbsp;bool &quot;chroma&quot;, bool &quot;debug&quot;)</code><br>
  <p><u>threshold</u>: a float &gt;0<br>
  <ul>
    Filtering strength. The higher, the more filtered the clip will be. Hard
    thresholding can use a higher threshold than Soft thresholding before the
    clip looks overfiltered.
  </ul>
  <u>method</u>: -1 to 1 The filtering method the filter will use.<br>
  <ul>
    -1 : No thresholding (debug purpose)
  </ul>
  <ul>
    0 : Hard Thresholding. All values under the threshold will be zeroed.
  </ul>
  <ul>
    1 : Soft Thresholding. All values under the threshold will be zeroed. All
    values above will be reduced by the threshold.
  </ul>
  <ul>
    2 : Pseudo-adaptative thresholding. Scale input threshold depending on local
    wavelet data (local = wavelet decomposition level).
  </ul>
  <ul>
    3 : Qian's thresholding. Scales or nullifies coefficients - intermediary
    between (more) soft and (less) hard thresholding.
  </ul>
  <u>nsteps</u>: 1&lt;int&lt;8
  <ul>
    Number of times, the wavelet will decompose the picture. High values can be
    slower but results will be better.<br>
    Suggested values are 3-6.<br>
    Picture can't be decomposed beyond a particular point (typically, 8 for a
    640x480 frame - as 2^9 = 512 &gt; 480)
  </ul>
  <br>
  <u>chroma</u>: true or false
  <ul>
    chroma=true enable Chroma filtering. It is slower but give better results
  </ul>
  <br>
  <u>debug</u>: true or false
  <ul>
    Deactivates the inverse transform and normalize coefficients for direct
    display.
  </ul>
  <br>
  <u>interlaced</u>: true or false
  <ul>
    Try to process separately fields of a YV12 clip (will be ignored in other
    cases).
  </ul>
  <br>
</ul>
<h2>History and download:</h2>
<p>&nbsp;
<ul>
  <u>v 0.12</u>&nbsp;First Release<br>
  <ul>
    <li>Precision problems corrected, 0 for threshold is now lossless.</li>
  </ul>
  <br>
  <u>v 0.13</u><br>
  <ul>
    <li>Hard thresholding method enabled.</li>
    <li>Cosmetic changes.</li>
    <li>Avisynth parameters changed.</li>
  </ul>
  <br>
  <u>v 0.2</u>
  <ul>
    <li>Implemented many new wavelet filters, thanks to the wavelet transform
      coder construction kit.<br>
      look at http://www.geoffdavis.net/ for more informations.</li>
    <li>Implemented nsteps parameter, that allow you to use n steps in the
      selected wavelet tranform.</li>
    <li>Some nsteps values could produce unvalid results, reducing this value
      generally solve the problem.</li>
    <li>Little optimizations from Shodan and Bidoche.</li>
  </ul>
  <br>
  <u>v 0.22</u>
  <ul>
    <li>YUY2 colorspace support.</li>
    <li>Optionnal chroma filtering, (chroma=true/false).</li>
    <li>Cosmetic changes, code cleaned.</li>
    <li>Html documentation.</li>
  </ul>
  <br>
  <u>v 0.23</u>
  <ul>
    <li>Code cleaned, filters class removed.</li>
    <li>Better parameters for compilation. Should really works on every cpu now.</li>
    <li>Removed all filters except Brislawn 10/10, so filter parameter has been
      removed.(it's like filter=7).</li>
    <li>A little speed increase (3-5fps on a 640x256 frame with nsteps=6).</li>
  </ul>
  <br>
  <u>V0.24</u>
  <ul>
    <li>Another speed increase, some critical loops unrolled (To infinity and
      beyond!)</li>
  </ul>
  <br>
  <u>V0.241</u>
  <ul>
    <li>height and width must be mod4, added errors messages if not</li>
    <li>Cleaned include thanks to Kurosu</li>
  </ul>
  <br>
  <u>V0.242</u>
  <ul>
    <li>Removed restrictions on width/height, fixed bugs</li>
    <li>Some improvements from Kurosu</li>
  </ul>
  <br>
  <u>V0.243</u>
  <ul>
    <li>Code cleaned</li>
  </ul>
  <br>
  <u>V0.25</u>
  <ul>
    <li>Little speed increase (due to some little profiles and vectorizations)</li>
    <li>added defaults</li>
    <li>added a visual.net compiled dll for compatibility purposes. This dll is
      slower</li>
  </ul>
  <br>
  <u>V0.26 (Kurosu)</u>
  <ul>
    <li>Merged (C++ frenzy) all assembly parts from Kurosu's version into one
      dll</li>
    <li>Hence, speed increase</li>
    <li>Undone previous vectorization optimizations</li>
    <li>All improvements are available for YV12 only</li>
  </ul>
  <br>
  <u>V0.26.1 (Kurosu)</u>
  <ul>
    <li>Merge from Sh0dan on copy</li>
    <li>Cleaner and safer management from Bidoche</li>
    <li>Fixed a crash that may have affected P4 users (Athlons with SSE support
      weren't affected as 3DNow! code, being the fatest, is always selected).</li>
    <li>Added debug output and NOOP threshold method (for debug purpose)</li>
  </ul>
  <br>
  <u>V0.27.0 (Kurosu)</u>
  <ul>
    <li>Continued integration and added framework for Haar wavelet (still not
      functionnal, deactivated)</li>
    <li>All optimizations proposed by Sh0dan, ARDA and Bidoche</li>
    <li>Some registers reuse (AMD-64 gonna rock) for some more speed (5%)</li>
    <li>Added Qian thresholding</li>
  </ul>
  <br>
  <u>V0.27.1 (Kurosu)</u>
  <ul>
    <li>Fixed YUY2 mode</li>
    <li>Added RGB24 and RGB32 mode</li>
    <li>The 3 above modes are unlikely to get any speed optimization</li>
  </ul>
  <br>
  <u>V0.28.0 (Kurosu)</u>
  <ul>
    <li>Fixed all modes to properly process what needs to be processed (small
      speedup)</li>
    <li>Unrolled float2byte conversion, little speed-up</li>
    <li>Added interlaced (see option with that name) support to YV12 colorspace</li>
    <li>Workspace compatible with ICL7. dll isn't compiled in that mode for
      legal reasons (I don't own ICL)</li>
    <li>Decteted a major slowdown for MOD64 width. Avoid them, as applying this
      filter before resizing might be faster in fact (particularly true for
      widths of 512)</li>
  </ul>
  <br>
</ul>
<h2>Credits :</h2>
<ul>
  <li>Everyone at Doom9.org for their counsels.</li>
  <li>MarcFD for his mpegdec3 html documentation. This html is the same but with
    modified contents.</li>
  <li>Lefungus for his VagueDenoiser html documentatiion. This html is the same
    but with modified contents. :)</li>
  <li>Geoff Davis, author of the wavelet transform coder construction kit.</li>
  <li>Lefungus, VagueDenoiser's creator.</li>
  <li>Kurosu, code reorganization and optimizations.</li>
</ul>
<h2>Code Distribution :</h2>
<p>&nbsp;
<ul>
  This is a free sofware distribued under the terms of the GNU-GPL v2
</ul>
<h2>Contact :</h2>
<ul>
  <p>You can <a href="mailto:lefungus@altern.org">e-mail Lefungus</a> for most
  suggestion, bug report, feature request, or whatever.<br>
  Optimization matters are <a href="mailto:kurosu@inforezo.org">Kurosu</a>'s
  matters.</p>
  <p>Goto <a href="http://forum.doom9.org">http://forum.doom9.org</a> for
  support.</p>
</ul>
<hr>
Yet it should be obvious, you can reach me here: <u>kurosu (at) inforezo (dot)
org</u></font>
</body>
</html>
